Telegram Group & Telegram Channel
🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib



tg-me.com/golang_lib/458
Create:
Last Update:

🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib

BY Библиотека Go (Golang) разработчика




Share with your friend now:
tg-me.com/golang_lib/458

View MORE
Open in Telegram


Библиотека Go Golang разработчика Telegram | DID YOU KNOW?

Date: |

Look for Channels Online

You guessed it – the internet is your friend. A good place to start looking for Telegram channels is Reddit. This is one of the biggest sites on the internet, with millions of communities, including those from Telegram.Then, you can search one of the many dedicated websites for Telegram channel searching. One of them is telegram-group.com. This website has many categories and a really simple user interface. Another great site is telegram channels.me. It has even more channels than the previous one, and an even better user experience.These are just some of the many available websites. You can look them up online if you’re not satisfied with these two. All of these sites list only public channels. If you want to join a private channel, you’ll have to ask one of its members to invite you.

Pinterest (PINS) Stock Sinks As Market Gains

Pinterest (PINS) closed at $71.75 in the latest trading session, marking a -0.18% move from the prior day. This change lagged the S&P 500's daily gain of 0.1%. Meanwhile, the Dow gained 0.9%, and the Nasdaq, a tech-heavy index, lost 0.59%. Heading into today, shares of the digital pinboard and shopping tool company had lost 17.41% over the past month, lagging the Computer and Technology sector's loss of 5.38% and the S&P 500's gain of 0.71% in that time. Investors will be hoping for strength from PINS as it approaches its next earnings release. The company is expected to report EPS of $0.07, up 170% from the prior-year quarter. Our most recent consensus estimate is calling for quarterly revenue of $467.87 million, up 72.05% from the year-ago period.

Библиотека Go Golang разработчика from sg


Telegram Библиотека Go (Golang) разработчика
FROM USA